using System;
using ebcpatterns.concurrent;
using ebcpatterns.flow;
using ebcpatterns.infrastructure;

namespace app.tests.mocks
{
    public class Mainboard : IMainboard
    {
        private readonly IEntryPoint entryPoint;
        private ClassWithDependency classWithDependency;
        private ClassThatNeedsConfiguration classThatNeedsConfiguration;

        public Mainboard(
            IEntryPoint entryPoint, 
            ClassWithDependency classWithDependency, 
            ClassThatNeedsConfiguration classThatNeedsConfiguration, 
            IThrottle<int> throttle,
            IJoin<int, string> joinImplicitToTuple,
            IJoin<int, string, Tuple<int, string>> joinExplicit,
            IAsynchronizer asynchronizer1,
            IAsynchronizer<int> asynchronizer2,
            IMap<int> map1,
            IMap<Tuple<int, string>, string> map2) {
            
            this.entryPoint = entryPoint;
            this.classWithDependency = classWithDependency;
            this.classThatNeedsConfiguration = classThatNeedsConfiguration;
        }
    }
}